package com.gongyinlian.personalprofilewebsiteserver.utils;

/**
 * 用户信息持有者
 * 使用ThreadLocal存储当前登录用户信息
 * 
 * @author personal-profile-website
 * @date 2024-10-27
 */
public class UserHolder {
    
    private static final ThreadLocal<Long> USER_ID_HOLDER = new ThreadLocal<>();
    private static final ThreadLocal<String> USERNAME_HOLDER = new ThreadLocal<>();
    
    /**
     * 设置当前用户ID
     * 
     * @param userId 用户ID
     */
    public static void setUserId(Long userId) {
        USER_ID_HOLDER.set(userId);
    }
    
    /**
     * 获取当前用户ID
     * 
     * @return 用户ID
     */
    public static Long getUserId() {
        return USER_ID_HOLDER.get();
    }
    
    /**
     * 设置当前用户名
     * 
     * @param username 用户名
     */
    public static void setUsername(String username) {
        USERNAME_HOLDER.set(username);
    }
    
    /**
     * 获取当前用户名
     * 
     * @return 用户名
     */
    public static String getUsername() {
        return USERNAME_HOLDER.get();
    }
    
    /**
     * 设置当前用户信息
     * 
     * @param userId 用户ID
     * @param username 用户名
     */
    public static void setUser(Long userId, String username) {
        setUserId(userId);
        setUsername(username);
    }
    
    /**
     * 清除当前用户信息
     */
    public static void clear() {
        USER_ID_HOLDER.remove();
        USERNAME_HOLDER.remove();
    }
}

